from selenium import webdriver
from selenium.webdriver.common.by import By  # 操作元素的库
import time
# 实例化驱动
browser = webdriver.Chrome()
# 打开网页
browser.get("https://www.baidu.com/")
# 浏览器全屏化
browser.maximize_window()

# 通过ID定位元素内容  id = kw 是唯一的
# browser.find_element(By.ID,"kw").send_keys("张鑫plus")
"""
browser：刚才实例化的驱动
find_element：查找元素使用
By.ID:是用ID方式进行定位
"kw"：要操作的元素
.send_keys()：要输入的内容
"""
# 通过NAME定位元素内容   NAME=wd是唯一的
# browser.find_element(By.NAME,"wd").send_keys("张鑫plus继续")
# 通过CLASS_NAME定位元素内容  s_ipt是唯一的
# browser.find_element(By.CLASS_NAME,"s_ipt").send_keys("张鑫2号")

# 通过XPATH定位元素内容
# browser.find_element(By.XPATH,"//*[@id='kw']").send_keys("selenium2")

# 通过CSS_SELECTOR定位元素内容
# browser.find_element(By.CSS_SELECTOR,"#kw").send_keys("selenium3")

# 通过TAG_NAME定位元素内容   ：通过元素标签名定位  input是一组
"""
input = browser.find_elements(By.TAG_NAME,"input")  # 所有的input标签都在这里
for i in input:
    # 遍历访问每一个input标签
    if i.get_attribute("name") == 'wd':
        i.send_keys("selenium111") # 那么我去输入selenium111
"""
"""
i：表示每一个input进行的遍历
get_attribute：通过key获取它的value值
如果说某一个input标签，name的key值为wd
"""

# 通过LINK_TEXT文本定位元素内容
# browser.find_element(By.LINK_TEXT,"新闻").click()
# browser.find_element(By.LINK_TEXT,"地图").click()
"""
click()：将捕捉到的元素点击
"""

# PARTIAL_LINK_TEXT模糊文本定位
# browser.find_element(By.PARTIAL_LINK_TEXT,"hao").click()
# browser.find_element(By.PARTIAL_LINK_TEXT,"123").click()
# browser.find_element(By.PARTIAL_LINK_TEXT,"ao12").click()
# browser.find_element(By.PARTIAL_LINK_TEXT,"o").click()

"""
八种定位方式：
1 ID定位
2 NAME定位
3 XPATH定位
4 CSS SELECTOR
5 LINK TEXT ：根据文本内容定位
6 TAG_NAME定位
7 PARTIAL_LINK_TEXT：模糊文本定位
8 CLASS NAME定位

我该如何使用这些定位方法？
第一梯队：ID、NAME、CLASS_NAME、手写XPATH
第二梯队：TAG_NAME
第三梯队：XPATH（直接copy，能不用尽量就不用）、CSS SELECTOR（直接copy）、PARTIAL_LINK_TEXT、LINK TEXT

为什么不要xpath和css复制的？
xpath是根据页面路径定位
如果web前端页面发生了页面改动，脚本都需要重写的
"""






# 等待一下
time.sleep(5)
"""
为什么打开就关闭呢？
因为在selenium4.x版本以上，为了节省资源开销，selenium库会看后面没有动作后，自动关闭浏览器
怎么看版本？
pip list | findstr selenium
pip list：列出所有安装的库
| findstr  selenium：只过滤selenium库
"""

